energympro.h
exif.h
explorist_ini.h
+ f90g_track.h
filter.h
filter_vecs.h
format.h
energympro.h \
exif.h \
explorist_ini.h \
+ f90g_track.h \
filter.h \
filter_vecs.h \
format.h \
*/
-#include "defs.h"
-#include "gbfile.h"
-#include <QDebug>
-#include <QFileInfo>
+#include "f90g_track.h"
-#define MYNAME "f90g_track"
-#define TTRECORDSIZE 249
-#define HEADERRECORDSIZE 30
-#define FLIPEDBITS 0xaa
+#include <QDate> // for QDate
+#include <QDateTime> // for QDateTime
+#include <QFileInfo> // for QFileInfo
+#include <QTime> // for QTime
+#include <Qt> // for UTC
+#include <cstdio> // for sscanf, snprintf, SEEK_SET
+#include <cstring> // for memcmp
+#include "defs.h" // for fatal, Waypoint, track_add_head, track_add_wpt, route_head
+#include "gbfile.h" // for gbfread, gbfclose, gbfopen, gbfseek
-static gbfile* fin = nullptr;
-static route_head* track = nullptr;
-
-static
-QVector<arglist_t> f90g_track_args = {
-};
+#define MYNAME "f90g_track"
+#define TTRECORDSIZE 249
+#define HEADERRECORDSIZE 30
+#define FLIPEDBITS 0xaa
+#define VALIDHEADER "MEDIA 1."
/*******************************************************************************
* %%% global callbacks called by gpsbabel main process %%% *
*******************************************************************************/
-#define VALIDHEADER "MEDIA 1."
-static void
-f90g_track_rd_init(const QString& fname)
+void
+F90gTrackFormat::rd_init(const QString& fname)
{
char header[HEADERRECORDSIZE];
}
}
-static void
-f90g_track_rd_deinit()
+void
+F90gTrackFormat::rd_deinit()
{
gbfclose(fin);
}
-// needed conversion factors
-static const double MIN_PER_DEGREE = 600000.0f;
-static const float SPEED_CONVERSION = (10.0f)/(36.0f); // convert KPH to meters per second
-
-static void
-f90g_track_read()
+void
+F90gTrackFormat::read()
{
char northSouth, eastWest, velocityMark, ttRec[TTRECORDSIZE], tempBuf[20];
int year, mon, mday, hour, min, sec, latitudeDeg, latitudeMin, longitudeDeg, longitudeMin, velocity;
}
}
}
-
-// capabilities below means: we can only read trace file.
-
-ff_vecs_t f90g_track_vecs = {
- ff_type_file,
- { ff_cap_none, (ff_cap)(ff_cap_read), ff_cap_none },
- f90g_track_rd_init,
- nullptr,
- f90g_track_rd_deinit,
- nullptr,
- f90g_track_read,
- nullptr,
- nullptr,
- &f90g_track_args,
- CET_CHARSET_UTF8, 0 /* ascii is the expected character set */
- /* not fixed, can be changed through command line parameter */
- , NULL_POS_OPS,
- nullptr
-};
--- /dev/null
+/*
+ Map file reader for F90G Automobile DVR.
+
+ Copyright (C) 2014 Jim Keeler, James.L.Keeler@gmail.com
+ Copyright (C) 2001-2013 Robert Lipe, robertlipe+source@gpsbabel.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Read the map file contents picking out the defined record types.
+
+ The map file contains a constant 30 byte header record followed by a variable number of
+ TT records. The TT records start with the two characters "TT" and are 251 bytes long.
+ The TT records contain values for time, position and velocity.
+
+ */
+#ifndef F90G_TRACK_H_INCLUDED_
+#define F90G_TRACK_H_INCLUDED_
+
+#include <QString> // for QString
+#include <QVector> // for QVector
+
+#include "defs.h" // for ff_cap, arglist_t, ff_cap_none, CET_CHARSET_UTF8, ff_cap_read, ff_type, ff_type_file, route_head
+#include "format.h" // for Format
+#include "gbfile.h" // for gbfile
+
+
+class F90gTrackFormat : public Format
+{
+public:
+ QVector<arglist_t>* get_args() override
+ {
+ return &f90g_track_args;
+ }
+
+ ff_type get_type() const override
+ {
+ return ff_type_file;
+ }
+
+ QVector<ff_cap> get_cap() const override
+ {
+ // waypoints, tracks, routes
+ return { ff_cap_none, (ff_cap)(ff_cap_read), ff_cap_none };
+ }
+
+ QString get_encode() const override
+ {
+ return CET_CHARSET_UTF8;
+ }
+
+ int get_fixed_encode() const override
+ {
+ return 0;
+ }
+
+ void rd_init(const QString& fname) override;
+ void read() override;
+ void rd_deinit() override;
+
+private:
+ /* Constants */
+
+ // needed conversion factors
+ static constexpr double MIN_PER_DEGREE = 600000.0;
+ static constexpr float SPEED_CONVERSION = (10.0f)/(36.0f); // convert KPH to meters per second
+
+ /* Data Members */
+
+ gbfile* fin = nullptr;
+ route_head* track = nullptr;
+
+ QVector<arglist_t> f90g_track_args = {
+ };
+
+};
+#endif // F90G_TRACK_H_INCLUDED_
#include "defs.h"
#include "dg-100.h"
#include "energympro.h"
+#include "f90g_track.h"
#include "exif.h"
#include "format.h"
#include "garmin_fit.h"
extern ff_vecs_t v900_vecs;
extern ff_vecs_t enigma_vecs;
extern ff_vecs_t format_garmin_xt_vecs;
-extern ff_vecs_t f90g_track_vecs;
#endif // MAXIMAL_ENABLED
class Vecs
LegacyFormat format_garmin_xt_fmt {format_garmin_xt_vecs};
GarminFitFormat format_fit_fmt;
MapbarTrackFormat mapbar_track_fmt;
- LegacyFormat f90g_track_fmt {f90g_track_vecs};
+ F90gTrackFormat f90g_track_fmt;
MapfactorFormat mapfactor_fmt;
EnergymproFormat energympro_fmt;
MyNavFormat mynav_fmt;